Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
node-sass
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
楚学文
node-sass
Commits
093aee42
Commit
093aee42
authored
Feb 17, 2012
by
Aaron Leung
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Workin on Sass/CSS-specific lexical patterns. Also tweaking the primitive stuff as necessary.
parent
bf9bed27
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
45 additions
and
7 deletions
+45
-7
lexical_patterns.c
src/text/lexical_patterns.c
+13
-0
lexical_patterns.h
src/text/lexical_patterns.h
+7
-2
prefix_primitives.c
src/text/prefix_primitives.c
+9
-2
prefix_primitives.h
src/text/prefix_primitives.h
+5
-2
test.c
src/text/test.c
+11
-1
No files found.
src/text/lexical_patterns.c
View file @
093aee42
#include <stdio.h>
#include "lexical_patterns.h"
ALTERNATIVES_MATCHER
(
semicolon_or_lbrack
,
prefix_is_semicolon
,
prefix_is_lbrack
);
CHARS_MATCHER
(
import
,
"@import"
);
CHARS_MATCHER
(
include
,
"@include"
);
CHARS_MATCHER
(
mixin
,
"@mixin"
);
CHARS_MATCHER
(
extend
,
"@extend"
);
static
SEQUENCE_MATCHER
(
sign_and_identifier
,
prefix_is_sign
,
prefix_is_identifier
);
static
ALTERNATIVES_MATCHER
(
word_initial
,
prefix_is_identifier
,
prefix_is_sign_and_identifier
);
static
ALTERNATIVES_MATCHER
(
word_trailer
,
prefix_is_identifier
,
prefix_is_sign
,
prefix_is_digits
);
FIRST_REST_MATCHER
(
word
,
prefix_is_word_initial
,
prefix_is_word_trailer
);
SEQUENCE_MATCHER
(
class
,
prefix_is_dot
,
prefix_is_word
);
SEQUENCE_MATCHER
(
id
,
prefix_is_hash
,
prefix_is_word
);
SEQUENCE_MATCHER
(
pseudo_class
,
prefix_is_colon
,
prefix_is_word
);
\ No newline at end of file
src/text/lexical_patterns.h
View file @
093aee42
#include "prefix_primitives.h"
DECLARE
(
word
);
\ No newline at end of file
DECLARE
(
semicolon_or_lbrack
);
DECLARE
(
word
);
DECLARE
(
class
);
DECLARE
(
id
);
DECLARE
(
pseudo_class
);
src/text/prefix_primitives.c
View file @
093aee42
...
...
@@ -79,6 +79,11 @@ char *prefix_one_plus(char *src, prefix_matcher m) {
return
src
;
}
char
*
prefix_find_first
(
char
*
src
,
prefix_matcher
m
)
{
while
(
*
src
&&
!
m
(
src
))
src
++
;
return
*
src
?
src
:
NULL
;
}
SINGLE_CTYPE_MATCHER
(
space
);
SINGLE_CTYPE_MATCHER
(
alpha
);
SINGLE_CTYPE_MATCHER
(
digit
);
...
...
@@ -112,6 +117,7 @@ CHAR_MATCHER (hyphen, '-');
CHAR_MATCHER
(
semicolon
,
';'
);
CHAR_MATCHER
(
colon
,
':'
);
CHAR_MATCHER
(
period
,
'.'
);
CHAR_MATCHER
(
dot
,
'.'
);
CHAR_MATCHER
(
question
,
'?'
);
CHAR_MATCHER
(
exclamation
,
'!'
);
CHAR_MATCHER
(
tilde
,
'~'
);
...
...
@@ -124,6 +130,7 @@ CHAR_MATCHER (pipe, '|');
CHAR_MATCHER
(
slash
,
'/'
);
CHAR_MATCHER
(
backslash
,
'\\'
);
CHAR_MATCHER
(
asterisk
,
'*'
);
CHAR_MATCHER
(
star
,
'*'
);
CHAR_MATCHER
(
pound
,
'#'
);
CHAR_MATCHER
(
hash
,
'#'
);
...
...
@@ -143,8 +150,8 @@ CHAR_MATCHER (eq, '=');
CHAR_MATCHER
(
assign
,
'='
);
CHARS_MATCHER
(
equal
,
"=="
);
C
LASS_CHAR
_MATCHER
(
sign
,
"+-"
);
C
LASS_CHAR
_MATCHER
(
delimiter
,
"()[]{}"
);
C
HAR_CLASS
_MATCHER
(
sign
,
"+-"
);
C
HAR_CLASS
_MATCHER
(
delimiter
,
"()[]{}"
);
static
ALTERNATIVES_MATCHER
(
identifier_initial
,
prefix_is_alphas
,
prefix_is_underscore
);
static
ALTERNATIVES_MATCHER
(
identifier_trailer
,
prefix_is_alnums
,
prefix_is_underscore
);
...
...
src/text/prefix_primitives.h
View file @
093aee42
...
...
@@ -13,12 +13,12 @@ char *prefix_is_ ## name(char *src) { \
return prefix_is_chars(src, prefix); \
}
#define C
LASS_CHAR
_MATCHER(name, class) \
#define C
HAR_CLASS
_MATCHER(name, class) \
char *prefix_is_ ## name(char *src) { \
return prefix_is_one_of(src, class); \
}
#define C
LASS_CHAR
S_MATCHER(name, class) \
#define C
HARS_CLAS
S_MATCHER(name, class) \
char *prefix_is_ ## name(char *src) { \
return prefix_is_some_of(src, class); \
}
...
...
@@ -83,6 +83,7 @@ char *_prefix_sequence(char *src, ...);
char
*
prefix_optional
(
char
*
src
,
prefix_matcher
m
);
char
*
prefix_zero_plus
(
char
*
src
,
prefix_matcher
m
);
char
*
prefix_one_plus
(
char
*
src
,
prefix_matcher
m
);
char
*
prefix_find_first
(
char
*
src
,
prefix_matcher
m
);
DECLARE
(
space
);
DECLARE
(
alpha
);
...
...
@@ -117,6 +118,7 @@ DECLARE(hyphen);
DECLARE
(
semicolon
);
DECLARE
(
colon
);
DECLARE
(
period
);
DECLARE
(
dot
);
DECLARE
(
question
);
DECLARE
(
exclamation
);
DECLARE
(
tilde
);
...
...
@@ -129,6 +131,7 @@ DECLARE(pipe);
DECLARE
(
slash
);
DECLARE
(
backslash
);
DECLARE
(
asterisk
);
DECLARE
(
star
);
DECLARE
(
pound
);
DECLARE
(
hash
);
...
...
src/text/test.c
View file @
093aee42
...
...
@@ -33,7 +33,7 @@ int main() {
char
*
words
=
"hello my name is aaron"
;
char
*
id1
=
"_identifier123{blah bloo}"
;
char
*
non_id
=
"12non_ident_ifier_"
;
char
*
word2
=
"-blah-bl+ah_bl12-34+1:foo"
;
char
*
word2
=
"-blah-bl+ah_bl12-34+1:foo
bar;
"
;
char
*
non_word
=
"-12blah-bloo"
;
char
*
selector
=
"#foo > :first-child { color: #abcdef; }"
;
char
*
lcomment
=
"// blah blah blah // end
\n
blah blah"
;
...
...
@@ -41,6 +41,8 @@ int main() {
char
*
integer1
=
"3837483+3"
;
char
*
integer2
=
"+294739-4"
;
char
*
integer3
=
"-294729+1"
;
char
*
class
=
".blah-blah_bloo112-blah+blee4 hello"
;
char
*
id
=
"#foo_bar-baz123-hux blee"
;
test1
(
prefix_is_spaces
,
spaces
);
test1
(
prefix_is_spaces
,
words
);
...
...
@@ -102,6 +104,14 @@ int main() {
test1
(
prefix_is_word
,
word2
);
test1
(
prefix_is_word
,
integer3
);
test1
(
prefix_is_class
,
class
);
test1
(
prefix_is_class
,
words
);
test1
(
prefix_is_id
,
id
);
test1
(
prefix_is_id
,
class
);
testn
(
prefix_find_first
,
word2
,
prefix_is_semicolon_or_lbrack
);
return
0
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment