mirror of
https://github.com/flynx/Slang.git
synced 2025-10-30 03:00:08 +00:00
minor cleanup on macro comment handling...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
e749977e11
commit
5252724ab2
@ -59,15 +59,21 @@ function run(context){
|
|||||||
// XXX make this add '\n' / EOL words to the stream...
|
// XXX make this add '\n' / EOL words to the stream...
|
||||||
//var SPLITTER = /\s*\([^\)]*\)\s*|\s*--.*[\n$]|\s*"([^"]*)"\s*|\s*'([^']*)'\s*|\s+/m
|
//var SPLITTER = /\s*\([^\)]*\)\s*|\s*--.*[\n$]|\s*"([^"]*)"\s*|\s*'([^']*)'\s*|\s+/m
|
||||||
var SPLITTER = RegExp([
|
var SPLITTER = RegExp([
|
||||||
|
/* XXX there are two ways to deal with comments:
|
||||||
|
// 1) lexer-based -- this section commented, next uncommented...
|
||||||
|
// 2) macro-based -- this section uncommented, next commented...
|
||||||
|
// #2 is a bit buggy...
|
||||||
// terms to keep in the stream...
|
// terms to keep in the stream...
|
||||||
/*'('+[
|
'\\s*('+[
|
||||||
'\\n',
|
'\\n',
|
||||||
'--',
|
'--',
|
||||||
].join('|')+')',*/
|
].join('|')+')',
|
||||||
|
//*/
|
||||||
|
|
||||||
// comments...
|
//* lexer comments...
|
||||||
'\\s*\\([^\\)]*\\)\\s*',
|
'\\s*\\([^\\)]*\\)\\s*',
|
||||||
'\\s*--.*[\\n$]',
|
'\\s*--.*[\\n$]',
|
||||||
|
//*/
|
||||||
|
|
||||||
// quoted strings...
|
// quoted strings...
|
||||||
'\\s*"([^"]*)"\\s*',
|
'\\s*"([^"]*)"\\s*',
|
||||||
@ -82,6 +88,27 @@ var SPLITTER = RegExp([
|
|||||||
'm')
|
'm')
|
||||||
|
|
||||||
|
|
||||||
|
// helpers...
|
||||||
|
// XXX should these skip quoted ends?
|
||||||
|
var collectUntil = function(end){
|
||||||
|
return function(context){
|
||||||
|
var res = ['--']
|
||||||
|
var code = context.code
|
||||||
|
var cur = code.shift()
|
||||||
|
res.push(cur)
|
||||||
|
while(cur != end && code.length > 0){
|
||||||
|
cur = code.splice(0, 1)[0]
|
||||||
|
res.push(cur)
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var dropUntil = function(end){
|
||||||
|
var collector = collectUntil(end)
|
||||||
|
return function(context){ collector(context) }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// pre-processor namespace...
|
// pre-processor namespace...
|
||||||
var PRE_NAMESPACE = {
|
var PRE_NAMESPACE = {
|
||||||
// comment...
|
// comment...
|
||||||
@ -90,17 +117,8 @@ var PRE_NAMESPACE = {
|
|||||||
// drop everything until '\n'
|
// drop everything until '\n'
|
||||||
//
|
//
|
||||||
// NOTE: this depends on explicit '\n' words...
|
// NOTE: this depends on explicit '\n' words...
|
||||||
'--': function(context){
|
'--': dropUntil('\n'),
|
||||||
var res = ['--']
|
//'(': dropUntil(')'),
|
||||||
var code = context.code
|
|
||||||
var cur = code.splice(0, 1)[0]
|
|
||||||
res.push(cur)
|
|
||||||
while(cur != '\n' && code.length > 0){
|
|
||||||
cur = code.splice(0, 1)[0]
|
|
||||||
res.push(cur)
|
|
||||||
}
|
|
||||||
console.log(res.join(' '))
|
|
||||||
},
|
|
||||||
|
|
||||||
// XXX use the real reader...
|
// XXX use the real reader...
|
||||||
// block...
|
// block...
|
||||||
@ -154,7 +172,7 @@ var PRE_NAMESPACE = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// a no op...
|
// a no op...
|
||||||
'\n': function(){ console.log('NL') },
|
'\n': function(){ },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user